home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume15 / mush6.3kit / part04 < prev    next >
Encoding:
Internet Message Format  |  1988-07-06  |  54.0 KB

  1. Subject:  v15i088:  Mush (mail user's shell) upgrade kit, version 6.3, Part04/04
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: dheller@cory.Berkeley.EDU (Dan Heller)
  7. Posting-number: Volume 15, Issue 88
  8. Archive-name: mush6.3kit/part04
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of shell archive."
  17. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  18. if test -f 'Diffs.6.3.c' -a "${1}" != "-c" ; then 
  19.   echo shar: Will not clobber existing file \"'Diffs.6.3.c'\"
  20. else
  21. echo shar: Extracting \"'Diffs.6.3.c'\" \(52485 characters\)
  22. sed "s/^X//" >'Diffs.6.3.c' <<'END_OF_FILE'
  23. X  .sp
  24. X  When constructing a return mail address to the author of a message,
  25. X  .B reply
  26. X! searches for special mail headers in the author's message which
  27. X  indicate the most efficient mail path for return mail.
  28. X  .I Mush
  29. X  will search for the \*QFrom:\*U, \*QReply-To:\*U,
  30. X--- 2285,2291 ----
  31. X  .sp
  32. X  When constructing a return mail address to the author of a message,
  33. X  .B reply
  34. X! searches for special mail headers in the author's message that
  35. X  indicate the most efficient mail path for return mail.
  36. X  .I Mush
  37. X  will search for the \*QFrom:\*U, \*QReply-To:\*U,
  38. X***************
  39. X*** 2338,2344 ****
  40. X  .BR saveopts " [file]"
  41. X  The complement of
  42. X  .BR source ,
  43. X! .B saveopts
  44. X  will save all settable variables, aliases
  45. X  and cmd's in the initialization file.
  46. X  (See the
  47. X--- 2371,2377 ----
  48. X  .BR saveopts " [file]"
  49. X  The complement of
  50. X  .BR source ,
  51. X! .B saveopts ,
  52. X  will save all settable variables, aliases
  53. X  and cmd's in the initialization file.
  54. X  (See the
  55. X***************
  56. X*** 2410,2416 ****
  57. X  .in +2
  58. X  .ta 1i
  59. X  -    reverse sort order
  60. X! d    sort by date received
  61. X  a    sort by author (alphabetical)
  62. X  s    sort by subject ignoring \*QRe:\*U
  63. X  R    sort by subject (alphabetical)
  64. X--- 2443,2449 ----
  65. X  .in +2
  66. X  .ta 1i
  67. X  -    reverse sort order
  68. X! d    sort by date
  69. X  a    sort by author (alphabetical)
  70. X  s    sort by subject ignoring \*QRe:\*U
  71. X  R    sort by subject (alphabetical)
  72. X***************
  73. X*** 2426,2431 ****
  74. X--- 2459,2469 ----
  75. X  New, unread messages are first, followed by preserved messages,
  76. X  and finally deleted messages are placed at the end of the list.
  77. X  .sp
  78. X+ When sorting by date, the boolean variable
  79. X+ .B date_received
  80. X+ is checked.  If it is set, then sorting goes by date received.
  81. X+ Otherwise (default), sorting is by date sent by the original author.
  82. X+ .sp
  83. X  If the variable
  84. X  .I sort
  85. X  is set, messages are sorted each time the user's system mailbox is
  86. X***************
  87. X*** 2504,2514 ****
  88. X  Options may be either boolean, in which case it is only
  89. X  significant to see whether or not they are set;
  90. X  string, in which case the actual value is of interest;
  91. X! or numerical, in which the numerical value is important.
  92. X  Some variables may have attributes
  93. X  of boolean and string at the same time.
  94. X  .sp
  95. X! If you or the program references a variable which is not explicitly set,
  96. X  then the environment variables are checked and a pointer to that data
  97. X  is returned.
  98. X  Following is a list of all predefined variables.
  99. X--- 2542,2552 ----
  100. X  Options may be either boolean, in which case it is only
  101. X  significant to see whether or not they are set;
  102. X  string, in which case the actual value is of interest;
  103. X! or numerical, in which case the numerical value is important.
  104. X  Some variables may have attributes
  105. X  of boolean and string at the same time.
  106. X  .sp
  107. X! If you or the program references a variable that is not explicitly set,
  108. X  then the environment variables are checked and a pointer to that data
  109. X  is returned.
  110. X  Following is a list of all predefined variables.
  111. X***************
  112. X*** 2531,2537 ****
  113. X  will ignore those headers even in the situations mentioned here.
  114. X  No headers can be ignored during updates and when using the
  115. X  .B save
  116. X! command since the user may ignore headers which are required by
  117. X  .I Mush
  118. X  or any other mail system to read those folders.
  119. X  .sp
  120. X--- 2569,2575 ----
  121. X  will ignore those headers even in the situations mentioned here.
  122. X  No headers can be ignored during updates and when using the
  123. X  .B save
  124. X! command since the user may ignore headers that are required by
  125. X  .I Mush
  126. X  or any other mail system to read those folders.
  127. X  .sp
  128. X***************
  129. X*** 2559,2569 ****
  130. X  .TP
  131. X  .B autodelete
  132. X  (Boolean)
  133. X! When exiting mail, all messages which have been read
  134. X  .I "regardless of whether they have been marked for deletion"
  135. X  are removed.
  136. X  Only messages that haven't been read or marked as
  137. X! .BR preserved ,
  138. X  are not removed.
  139. X  .TP
  140. X  .B autoedit
  141. X--- 2597,2607 ----
  142. X  .TP
  143. X  .B autodelete
  144. X  (Boolean)
  145. X! When exiting mail, all messages that have been read
  146. X  .I "regardless of whether they have been marked for deletion"
  147. X  are removed.
  148. X  Only messages that haven't been read or marked as
  149. X! .BR preserved 
  150. X  are not removed.
  151. X  .TP
  152. X  .B autoedit
  153. X***************
  154. X*** 2584,2590 ****
  155. X  .TP
  156. X  .B auto_route
  157. X  (Boolean)
  158. X! This variable has two functions, both of which only concern the command,
  159. X  .BR replyall ,
  160. X  and is only important to users who use UUCP to mail to remote sites.
  161. X  The first function is to cause replyall to modify the return addresses
  162. X--- 2622,2628 ----
  163. X  .TP
  164. X  .B auto_route
  165. X  (Boolean)
  166. X! This variable has two functions, both of which only concern the command
  167. X  .BR replyall ,
  168. X  and is only important to users who use UUCP to mail to remote sites.
  169. X  The first function is to cause replyall to modify the return addresses
  170. X***************
  171. X*** 2594,2609 ****
  172. X  destination.
  173. X  If the original sender of the message was on a remote
  174. X  machine which your machine does not exchange UUCP mail with, then a UUCP
  175. X! path containing hosts which you do talk to will have to be
  176. X  created to respond to the author.
  177. X  However, if he mailed to other people
  178. X! on machines which are also multi-hops away, the addresses he used for
  179. X  those recipients may differ from what you should specify if you were to
  180. X  try to reply to everyone on the listed in the original message.
  181. X  .sp
  182. X! For example, if the original sender came from remote host,
  183. X  .B pixar
  184. X! and the list of recipients looked like,
  185. X  .sp
  186. X  .nf
  187. X  .in +2
  188. X--- 2632,2647 ----
  189. X  destination.
  190. X  If the original sender of the message was on a remote
  191. X  machine which your machine does not exchange UUCP mail with, then a UUCP
  192. X! path containing hosts that you do talk to will have to be
  193. X  created to respond to the author.
  194. X  However, if he mailed to other people
  195. X! on machines that are also multi-hops away, the addresses he used for
  196. X  those recipients may differ from what you should specify if you were to
  197. X  try to reply to everyone on the listed in the original message.
  198. X  .sp
  199. X! For example, if the original sender came from remote host
  200. X  .B pixar
  201. X! and the list of recipients looked like
  202. X  .sp
  203. X  .nf
  204. X  .in +2
  205. X***************
  206. X*** 2625,2631 ****
  207. X  An attempt will be made to compensate by reconstructing the addresses
  208. X  for \*Quser2\*U and \*Quser3\*U according to the address of the original
  209. X  sender, \*Quser1\*U.
  210. X! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become,
  211. X  .sp
  212. X  .ti +2
  213. X  pixar!r2d2!user2, pixar!r2d2!user3.
  214. X--- 2663,2669 ----
  215. X  An attempt will be made to compensate by reconstructing the addresses
  216. X  for \*Quser2\*U and \*Quser3\*U according to the address of the original
  217. X  sender, \*Quser1\*U.
  218. X! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become
  219. X  .sp
  220. X  .ti +2
  221. X  pixar!r2d2!user2, pixar!r2d2!user3.
  222. X***************
  223. X*** 2639,2645 ****
  224. X  UUCP mail connections with.
  225. X  This list is checked when constructing
  226. X  mail addresses and the shortest path is made by removing from the
  227. X! UUCP path those hosts which do not need to be called.
  228. X  See the entry for
  229. X  .B known_hosts
  230. X  for more information.
  231. X--- 2677,2683 ----
  232. X  UUCP mail connections with.
  233. X  This list is checked when constructing
  234. X  mail addresses and the shortest path is made by removing from the
  235. X! UUCP path those hosts that do not need to be called.
  236. X  See the entry for
  237. X  .B known_hosts
  238. X  for more information.
  239. X***************
  240. X*** 2676,2682 ****
  241. X  .B autosign
  242. X  (Boolean/string)
  243. X  Append a signature to outgoing mail.
  244. X! If this variable is set, but not to a string (e.g., boolean-true),
  245. X  then the file ~/.signature is used.
  246. X  .sp
  247. X  Otherwise, the variable is interpreted in one of three ways.
  248. X--- 2714,2720 ----
  249. X  .B autosign
  250. X  (Boolean/string)
  251. X  Append a signature to outgoing mail.
  252. X! If this variable is set, but not to a string (e.g., boolean-true)
  253. X  then the file ~/.signature is used.
  254. X  .sp
  255. X  Otherwise, the variable is interpreted in one of three ways.
  256. X***************
  257. X*** 2692,2698 ****
  258. X  is interpreted as a user-definable variable and is expanded and appended
  259. X  to the letter.
  260. X  .sp
  261. X! Finally, if the variable is set to a string that begins with a backslash (\\),
  262. X  then the string itself (minus the `\\' character) is used; no expansion
  263. X  is done and no files are read.
  264. X  .sp
  265. X--- 2730,2736 ----
  266. X  is interpreted as a user-definable variable and is expanded and appended
  267. X  to the letter.
  268. X  .sp
  269. X! Finally, if the variable is set to a string that begins with a backslash (\\)
  270. X  then the string itself (minus the `\\' character) is used; no expansion
  271. X  is done and no files are read.
  272. X  .sp
  273. X***************
  274. X*** 2699,2705 ****
  275. X  In the latter two cases, it is advisable to set the variable using single
  276. X  quotes to avoid expanding the variable beforehand or eliminating the
  277. X  backslash.
  278. X! Examples,
  279. X  .sp
  280. X  .ti +2
  281. X  set autosign = '$foo'
  282. X--- 2737,2743 ----
  283. X  In the latter two cases, it is advisable to set the variable using single
  284. X  quotes to avoid expanding the variable beforehand or eliminating the
  285. X  backslash.
  286. X! Examples:
  287. X  .sp
  288. X  .ti +2
  289. X  set autosign = '$foo'
  290. X***************
  291. X*** 2707,2713 ****
  292. X  set autosign = '\\  Dan Heller island!argv@ucbcad.berkeley.edu'
  293. X  .sp
  294. X  Warning: if redirection from the calling shell is used, there will be
  295. X! no signature or forutne added to outgoing mail.  For example,
  296. X  .sp
  297. X  .ti +2
  298. X  % mush -s report manager < report_file
  299. X--- 2745,2751 ----
  300. X  set autosign = '\\  Dan Heller island!argv@ucbcad.berkeley.edu'
  301. X  .sp
  302. X  Warning: if redirection from the calling shell is used, there will be
  303. X! no signature or fortune added to outgoing mail.  For example,
  304. X  .sp
  305. X  .ti +2
  306. X  % mush -s report manager < report_file
  307. X***************
  308. X*** 2720,2727 ****
  309. X  .B autosign2
  310. X  (String)
  311. X  This alternate signature is available for special cases where the default
  312. X! signature is not desired or if no signture is desired for special addresses
  313. X! or if special addresses only require a signature.
  314. X  The format for this variable is:
  315. X  .sp
  316. X  .ti +2
  317. X--- 2758,2765 ----
  318. X  .B autosign2
  319. X  (String)
  320. X  This alternate signature is available for special cases where the default
  321. X! signature is not desired or if no signature is desired for special addresses
  322. X! or if only special addresses require a signature.
  323. X  The format for this variable is:
  324. X  .sp
  325. X  .ti +2
  326. X***************
  327. X*** 2780,2786 ****
  328. X  .TP
  329. X  .B crt
  330. X  (Numeric)
  331. X! Set to a value which describes the number of lines a message
  332. X  must have before invoking the
  333. X  .B pager
  334. X  to view a message.
  335. X--- 2818,2824 ----
  336. X  .TP
  337. X  .B crt
  338. X  (Numeric)
  339. X! Set to a value that describes the number of lines a message
  340. X  must have before invoking the
  341. X  .B pager
  342. X  to view a message.
  343. X***************
  344. X*** 2792,2807 ****
  345. X  string is automatically set upon startup of
  346. X  .I Mush
  347. X  and is reset each time the command
  348. X! .BR cd ,
  349. X  is called.
  350. X  It is referenced each time
  351. X  .B pwd
  352. X  is called and may be used as any other shell variable.
  353. X  .TP
  354. X  .B dead
  355. X  (String)
  356. X  File to use instead of dead.letter when interrupted mail is saved.
  357. X! For more information, see the variable,
  358. X  .B nosave.
  359. X  .TP
  360. X  .B dot
  361. X--- 2830,2857 ----
  362. X  string is automatically set upon startup of
  363. X  .I Mush
  364. X  and is reset each time the command
  365. X! .BR cd 
  366. X  is called.
  367. X  It is referenced each time
  368. X  .B pwd
  369. X  is called and may be used as any other shell variable.
  370. X  .TP
  371. X+ .B date_received
  372. X+ (Boolean)
  373. X+ When message headers are printed, the date is normally shown is
  374. X+ the time and date the sender sent the message.  If this variable
  375. X+ is set, then the date displayed is the date received.
  376. X+ .sp
  377. X+ When sorting messages by date, this variable is queried to determine
  378. X+ whether the messages should be sorted by date sent or date received.
  379. X+ .sp
  380. X+ \fBWarning:\fR For mailers that store messages \fIwithout\fR a line
  381. X+ that starts with \*QFrom \*U, this option does nothing.
  382. X+ .TP
  383. X  .B dead
  384. X  (String)
  385. X  File to use instead of dead.letter when interrupted mail is saved.
  386. X! For more information, see the variable
  387. X  .B nosave.
  388. X  .TP
  389. X  .B dot
  390. X***************
  391. X*** 2818,2824 ****
  392. X  (Character)
  393. X  When typing in a letter (not in an editor), when the
  394. X  .B escape
  395. X! character is the first character on the line, the following character
  396. X  is examined and a corresponding function associated with that
  397. X  .B "escape command"
  398. X  is executed.
  399. X--- 2868,2874 ----
  400. X  (Character)
  401. X  When typing in a letter (not in an editor), when the
  402. X  .B escape
  403. X! character is the first character on the line, the next character
  404. X  is examined and a corresponding function associated with that
  405. X  .B "escape command"
  406. X  is executed.
  407. X***************
  408. X*** 2855,2869 ****
  409. X  make sure that only a selected group of people get a fortune since
  410. X  certain people may not understand the messages at the end of your
  411. X  mail.  Therefore, you can set a list of addresses (either pure addresses
  412. X! or aliases which are expanded to addresses) to be the only people who
  413. X  receive fortunes if one is to be appended.  Therefore,
  414. X  if the To: and Cc: lines contain only address listed in this string
  415. X  variable, then a fortune is appended to the message.
  416. X! If those lists contain names which are not on the fortunates
  417. X  list, then no fortune is added.
  418. X  This cannot be overriden; using the
  419. X  tilde command \*Q~F\*U does not force a fortune to be added unless the
  420. X! list of individuals on the recipient list are all included in the fortunates
  421. X  list.  The list is made up of addresses or aliases separated by spaces or
  422. X  commas.
  423. X  .I "NOTE: fortune must be set in order for fortunates to work."
  424. X--- 2905,2919 ----
  425. X  make sure that only a selected group of people get a fortune since
  426. X  certain people may not understand the messages at the end of your
  427. X  mail.  Therefore, you can set a list of addresses (either pure addresses
  428. X! or aliases that are expanded to addresses) to be the only people who
  429. X  receive fortunes if one is to be appended.  Therefore,
  430. X  if the To: and Cc: lines contain only address listed in this string
  431. X  variable, then a fortune is appended to the message.
  432. X! If those lists contain names that are not on the fortunates
  433. X  list, then no fortune is added.
  434. X  This cannot be overriden; using the
  435. X  tilde command \*Q~F\*U does not force a fortune to be added unless the
  436. X! individuals on the recipient list are all included in the fortunates
  437. X  list.  The list is made up of addresses or aliases separated by spaces or
  438. X  commas.
  439. X  .I "NOTE: fortune must be set in order for fortunates to work."
  440. X***************
  441. X*** 2915,2920 ****
  442. X--- 2965,2977 ----
  443. X  in which case the name and address are the same.
  444. X  .sp
  445. X  .TP
  446. X+ .B history
  447. X+ (Numeric)
  448. X+ This variable is set to the number of commands the shell interface
  449. X+ will remember.  It is just like the history variable used in
  450. X+ .I csh.
  451. X+ If unset, the last command can always be referenced, but none other.
  452. X+ .TP
  453. X  .B hold
  454. X  (Boolean)
  455. X  Normally, on termination of mail, read messages are saved in
  456. X***************
  457. X*** 2937,2942 ****
  458. X--- 2994,3011 ----
  459. X  If the home directory cannot be found or read/write access is denied, an
  460. X  alternate directory, typically /tmp, is used.
  461. X  .TP
  462. X+ .B hostname
  463. X+ (String)
  464. X+ This is the name of your computer.  Currently, its sole usage is to
  465. X+ compose a correct \*QFrom:\*U line for use with Mail Transport Agents
  466. X+ that do not create this header automatically.  This will aid the
  467. X+ recipients of your mail in replying to your messages.
  468. X+ .sp
  469. X+ Note: the user should not have to set
  470. X+ this variable since it should be set automatically by the system.  However,
  471. X+ it may happen that the system's hostname cannot be queried and the user may
  472. X+ have to set this variable manually.
  473. X+ .TP
  474. X  .B ignore_bang
  475. X  (Boolean)
  476. X  If set,
  477. X***************
  478. X*** 2955,2969 ****
  479. X  .B reply
  480. X  commands.
  481. X  .TP
  482. X  .B in_reply_to
  483. X  (String)
  484. X! This variable may be set to a string which will complete the
  485. X  header \*QIn-Reply-To:\*U.
  486. X  The format of this string is identical to the options for the variable
  487. X  .BR hdr_format .
  488. X  .sp
  489. X  For example, if the user were to respond to a message
  490. X! from Dan Heller that was sent on October 21, 1987 at 10:39pm, with
  491. X  .B in_reply_to
  492. X  set to the string
  493. X  .in +2
  494. X--- 3024,3049 ----
  495. X  .B reply
  496. X  commands.
  497. X  .TP
  498. X+ .B indent_str
  499. X+ (String)
  500. X+ When including messages into the text of a letter you are editing,
  501. X+ each line of the messages is preceded by the value of
  502. X+ .BR indent_str .
  503. X+ If it is unset, the message body is indented by the string \*Q> \*U.
  504. X+ See also the variables
  505. X+ .B pre_indent_str
  506. X+ and
  507. X+ .BR post_indent_str .
  508. X+ .TP
  509. X  .B in_reply_to
  510. X  (String)
  511. X! This variable may be set to a string that will complete the
  512. X  header \*QIn-Reply-To:\*U.
  513. X  The format of this string is identical to the options for the variable
  514. X  .BR hdr_format .
  515. X  .sp
  516. X  For example, if the user were to respond to a message
  517. X! from Dan Heller that was sent on October 21, 1987, at 10:39pm, with
  518. X  .B in_reply_to
  519. X  set to the string
  520. X  .in +2
  521. X***************
  522. X*** 2973,2994 ****
  523. X  .ti -2
  524. X  the header line
  525. X  .sp
  526. X! In-Reply-To: Dan Heller's message as of Oct 21, 1987 10:39pm.
  527. X  .in-2
  528. X  .sp
  529. X  would be added to the message.
  530. X  .TP
  531. X- .B indent_str
  532. X- (String)
  533. X- When including messages into the text of a letter you are editing,
  534. X- each line of the messages is preceded by the value of
  535. X- .BR indent_str .
  536. X- If it is unset, the message body is indented by the string \*Q> \*U.
  537. X- See also the variables
  538. X- .B pre_indent_str
  539. X- and
  540. X- .BR post_indent_str .
  541. X- .TP
  542. X  .B keepsave
  543. X  (Boolean)
  544. X  If set, the commands
  545. X--- 3053,3063 ----
  546. X  .ti -2
  547. X  the header line
  548. X  .sp
  549. X! In-Reply-To: Dan Heller's message as of Oct 21, 1987, 10:39pm.
  550. X  .in-2
  551. X  .sp
  552. X  would be added to the message.
  553. X  .TP
  554. X  .B keepsave
  555. X  (Boolean)
  556. X  If set, the commands
  557. X***************
  558. X*** 3007,3016 ****
  559. X  and/or commas, and describes
  560. X  the hosts with whom you know your machine shares UUCP connections.
  561. X  When replying to mail, many times you will see that the return path
  562. X! constructed will have hostnames which your site could call, but instead
  563. X  the mail has been routed through a number of different machines first.
  564. X  .sp
  565. X! For example, if you respond to mail which would mail to the path,
  566. X  .sp
  567. X  .ti +2
  568. X  unicom!pixar!root
  569. X--- 3076,3085 ----
  570. X  and/or commas, and describes
  571. X  the hosts with whom you know your machine shares UUCP connections.
  572. X  When replying to mail, many times you will see that the return path
  573. X! constructed will have hostnames that your site could call, but instead
  574. X  the mail has been routed through a number of different machines first.
  575. X  .sp
  576. X! For example, if you respond to mail that would mail to the path
  577. X  .sp
  578. X  .ti +2
  579. X  unicom!pixar!root
  580. X***************
  581. X*** 3018,3024 ****
  582. X  but your know your machine already calls pixar, then sending the mail
  583. X  to unicom first is unnecessary.
  584. X  If you have set your known_hosts string to include pixar in its list,
  585. X! the resulting address would look like,
  586. X  .sp
  587. X  .ti +2
  588. X  pixar!root
  589. X--- 3087,3093 ----
  590. X  but your know your machine already calls pixar, then sending the mail
  591. X  to unicom first is unnecessary.
  592. X  If you have set your known_hosts string to include pixar in its list,
  593. X! the resulting address would look like
  594. X  .sp
  595. X  .ti +2
  596. X  pixar!root
  597. X***************
  598. X*** 3073,3079 ****
  599. X  When no_expand is set, aliases are not expanded and the headers
  600. X  reflect the same information as typed by the user.
  601. X  .TP
  602. X! .B no_hdr
  603. X  (Boolean)
  604. X  If set, this variable tells 
  605. X  .I Mush
  606. X--- 3142,3148 ----
  607. X  When no_expand is set, aliases are not expanded and the headers
  608. X  reflect the same information as typed by the user.
  609. X  .TP
  610. X! .B no_hdrs
  611. X  (Boolean)
  612. X  If set, this variable tells 
  613. X  .I Mush
  614. X***************
  615. X*** 3095,3103 ****
  616. X  signals.
  617. X  When the message is terminated, a copy of it is saved to the
  618. X  file \*Qdead.letter\*U in the user's home directory or to the file described
  619. X! by the variable,
  620. X  .BR dead .
  621. X! If the variable,
  622. X  .B nosave
  623. X  is set, then a backup copy of the message will not be saved.
  624. X  .TP
  625. X--- 3164,3172 ----
  626. X  signals.
  627. X  When the message is terminated, a copy of it is saved to the
  628. X  file \*Qdead.letter\*U in the user's home directory or to the file described
  629. X! by the variable
  630. X  .BR dead .
  631. X! If the variable
  632. X  .B nosave
  633. X  is set, then a backup copy of the message will not be saved.
  634. X  .TP
  635. X***************
  636. X*** 3133,3139 ****
  637. X  as follows:
  638. X  .sp
  639. X  .ti +2
  640. X! set pre_indent_str = '[In the message entitled "%s", on %7d\n %n writes:]'
  641. X  .sp
  642. X  You can then include a message body using \*Q~i\*U, and you might
  643. X  get something like this:
  644. X--- 3202,3208 ----
  645. X  as follows:
  646. X  .sp
  647. X  .ti +2
  648. X! set pre_indent_str = '[In the message entitled "%s", on %7d\\n %n writes:]'
  649. X  .sp
  650. X  You can then include a message body using \*Q~i\*U, and you might
  651. X  get something like this:
  652. X***************
  653. X*** 3215,3221 ****
  654. X  .B prompt
  655. X  (String)
  656. X  You can set your prompt to tell you many different pieces of information.
  657. X! By default, the prompt is set to the string,
  658. X  .sp
  659. X  .ti +2
  660. X  \*QMsg %m of %t: \*U
  661. X--- 3284,3290 ----
  662. X  .B prompt
  663. X  (String)
  664. X  You can set your prompt to tell you many different pieces of information.
  665. X! By default, the prompt is set to the string
  666. X  .sp
  667. X  .ti +2
  668. X  \*QMsg %m of %t: \*U
  669. X***************
  670. X*** 3238,3243 ****
  671. X--- 3307,3313 ----
  672. X  %D    today's day (Sun, Mon, Tue, ...)
  673. X  %f    filename of the current folder
  674. X  %m    \*Qcurrent message\*U number
  675. X+ %M    current month
  676. X  %n    number of \*Qnew\*U messages
  677. X  %N    today's date (Number of the day in the month)
  678. X  %T    current time (hours and seconds)
  679. X***************
  680. X*** 3255,3260 ****
  681. X--- 3325,3343 ----
  682. X  .I Mush
  683. X  is not printed on startup.
  684. X  .TP
  685. X+ .B realname
  686. X+ (String)
  687. X+ Set to the name of the user.  The name is initialized to the value of
  688. X+ the environment variable
  689. X+ .B NAME
  690. X+ upon invocation of the program.
  691. X+ If that isn't set, then the name is gotten from the password file if
  692. X+ available.  If this variable wants to be reset or changed after the
  693. X+ program has started, the user should issue the command:
  694. X+ .sp
  695. X+ .ti +2
  696. X+ set realname = "Your name here"
  697. X+ .TP
  698. X  .B record
  699. X  (String)
  700. X  Set to the name of a file to record all outgoing mail.
  701. X***************
  702. X*** 3277,3283 ****
  703. X  given there is used.
  704. X  If the variable
  705. X  .B reply_to_hdr
  706. X! is set to a of headers (delimited by spaces or commas), then that list
  707. X  is searched.
  708. X  If none of the headers listed in the variable exist
  709. X  in the message, then a warning message is printed and the default
  710. X--- 3360,3366 ----
  711. X  given there is used.
  712. X  If the variable
  713. X  .B reply_to_hdr
  714. X! is set to a list of headers (delimited by spaces or commas), then that list
  715. X  is searched.
  716. X  If none of the headers listed in the variable exist
  717. X  in the message, then a warning message is printed and the default
  718. X***************
  719. X*** 3286,3296 ****
  720. X  .B reply
  721. X  command for more details.
  722. X  .TP
  723. X! .B sendmail
  724. X! (String)
  725. X! If set, the program and arguments described by this variable will
  726. X! be executed to actually deliver mail sent by
  727. X! .I Mush.
  728. X  .TP
  729. X  .B screen
  730. X  (Numeric)
  731. X--- 3369,3381 ----
  732. X  .B reply
  733. X  command for more details.
  734. X  .TP
  735. X! .B save_empty
  736. X! (Boolean)
  737. X! Normally, when all messages in a folder are deleted and the user updates
  738. X! the folder or changes to a new folder, the empty folder is deleted.
  739. X! .B save_empty
  740. X! prevents the folder from being deleted and it is left zero length.
  741. X! Note: the main system mailbox is never deleted when empty anyway.
  742. X  .TP
  743. X  .B screen
  744. X  (Numeric)
  745. X***************
  746. X*** 3299,3308 ****
  747. X  .TP
  748. X  .B screen_win
  749. X  (Numeric)
  750. X! Man be set to the number of message headers to display in the tool mode.
  751. X  A subwindow is created for message headers, and its size is large
  752. X  enough to hold $screen_win headers.
  753. X  .TP
  754. X  .B show_deleted
  755. X  (Boolean)
  756. X  If true, deleted message headers are displayed along with
  757. X--- 3384,3399 ----
  758. X  .TP
  759. X  .B screen_win
  760. X  (Numeric)
  761. X! May be set to the number of message headers to display in the tool mode.
  762. X  A subwindow is created for message headers, and its size is large
  763. X  enough to hold $screen_win headers.
  764. X  .TP
  765. X+ .B sendmail
  766. X+ (String)
  767. X+ If set, the program and arguments described by this variable will
  768. X+ be executed to actually deliver mail sent by
  769. X+ .I Mush.
  770. X+ .TP
  771. X  .B show_deleted
  772. X  (Boolean)
  773. X  If true, deleted message headers are displayed along with
  774. X***************
  775. X*** 3312,3320 ****
  776. X  .TP
  777. X  .B show_hdrs
  778. X  (String)
  779. X! Set to a list (space and/or comma separated) of headers which are to be the
  780. X  only headers displayed when viewing a message.
  781. X! This variable disables the headers supressed by the
  782. X  .B ignore
  783. X  command.
  784. X  For example,
  785. X--- 3403,3411 ----
  786. X  .TP
  787. X  .B show_hdrs
  788. X  (String)
  789. X! Set to a list (space and/or comma separated) of headers that are to be the
  790. X  only headers displayed when viewing a message.
  791. X! This variable disables the headers suppressed by the
  792. X  .B ignore
  793. X  command.
  794. X  For example,
  795. X***************
  796. X*** 3322,3328 ****
  797. X  .ti +2
  798. X  set show_hdrs = "from date subject to cc"
  799. X  .sp
  800. X! will only display the headers,
  801. X  .B From: Date: Subject: To: Cc:
  802. X  in their entirety.
  803. X  .TP
  804. X--- 3413,3419 ----
  805. X  .ti +2
  806. X  set show_hdrs = "from date subject to cc"
  807. X  .sp
  808. X! will only display the headers
  809. X  .B From: Date: Subject: To: Cc:
  810. X  in their entirety.
  811. X  .TP
  812. X***************
  813. X*** 3342,3348 ****
  814. X  .TP
  815. X  .B tmpdir
  816. X  (String)
  817. X! This variable describes the path to use as the directory to use
  818. X  for all tempfiles that
  819. X  .I Mush
  820. X  uses.  By default, the user's home directory is used.  If that
  821. X--- 3433,3439 ----
  822. X  .TP
  823. X  .B tmpdir
  824. X  (String)
  825. X! This variable describes the path to use as the directory
  826. X  for all tempfiles that
  827. X  .I Mush
  828. X  uses.  By default, the user's home directory is used.  If that
  829. X***************
  830. X*** 3351,3363 ****
  831. X  .TP
  832. X  .B toplines
  833. X  (Numeric)
  834. X! The number of lines of a message to print when the "top" command
  835. X! is issued.
  836. X! If unset, $crt lines are printed.
  837. X  .TP
  838. X  .B unix
  839. X  (Boolean)
  840. X! If set, commands which are not
  841. X  .I Mush
  842. X  commands are considered to be
  843. X  .I UNIX
  844. X--- 3442,3457 ----
  845. X  .TP
  846. X  .B toplines
  847. X  (Numeric)
  848. X! The number of lines of a message to print when the
  849. X! .B top
  850. X! command is issued.  If unset, $crt lines are printed.
  851. X! Note that the message body only is printed when using the
  852. X! .B top
  853. X! command; message headers are not counted as lines since they are not displayed.
  854. X  .TP
  855. X  .B unix
  856. X  (Boolean)
  857. X! If set, commands that are not
  858. X  .I Mush
  859. X  commands are considered to be
  860. X  .I UNIX
  861. X***************
  862. X*** 3393,3399 ****
  863. X  When through editing messages, just before sending,
  864. X  .B verify
  865. X  will ask you if you want to send, continue editing, or abort the
  866. X! whole message all together.
  867. X  .TP
  868. X  .B visual
  869. X  (String)
  870. X--- 3487,3493 ----
  871. X  When through editing messages, just before sending,
  872. X  .B verify
  873. X  will ask you if you want to send, continue editing, or abort the
  874. X! whole message altogether.
  875. X  .TP
  876. X  .B visual
  877. X  (String)
  878. X***************
  879. X*** 3436,3442 ****
  880. X  will be aware of changes in other environments should they be forced
  881. X  to use them.
  882. X  There may also be warning messages of failed routines
  883. X! or assertions which are not fatal enough to interrupt normal running
  884. X  of the program.
  885. X  .TP
  886. X  .B wrap
  887. X--- 3530,3536 ----
  888. X  will be aware of changes in other environments should they be forced
  889. X  to use them.
  890. X  There may also be warning messages of failed routines
  891. X! or assertions that are not fatal enough to interrupt normal running
  892. X  of the program.
  893. X  .TP
  894. X  .B wrap
  895. X***************
  896. X*** 3452,3463 ****
  897. X  .B next
  898. X  command.
  899. X  .SH "MAIL ADDRESSES"
  900. X! Whenever a command which requires a user address or set of addresses
  901. X  is specified
  902. X  .RB ( mail ,
  903. X  .BR reply ,
  904. X  .BR alias ,
  905. X! .BR etc ),
  906. X  the addresses given must be separated by commas.
  907. X  Most casual users specify addresses that contain no comments or whitespace.
  908. X  The simplest addresses are just the login names of the users you wish to send
  909. X--- 3546,3557 ----
  910. X  .B next
  911. X  command.
  912. X  .SH "MAIL ADDRESSES"
  913. X! Whenever a command that requires a user address or set of addresses
  914. X  is specified
  915. X  .RB ( mail ,
  916. X  .BR reply ,
  917. X  .BR alias ,
  918. X! .BR etc )
  919. X  the addresses given must be separated by commas.
  920. X  Most casual users specify addresses that contain no comments or whitespace.
  921. X  The simplest addresses are just the login names of the users you wish to send
  922. X***************
  923. X*** 3565,3571 ****
  924. X  .nf
  925. X  .in +2
  926. X  .ta 1.5i
  927. X! alias george    George Jetson <george@spacely.space.sprokets>
  928. X  alias jane    Jane Jetson <jane@sky-high.appts>
  929. X  alias group    george, jane
  930. X  .in -2
  931. X--- 3659,3665 ----
  932. X  .nf
  933. X  .in +2
  934. X  .ta 1.5i
  935. X! alias george    George Jetson <george@spacely.space.sprockets>
  936. X  alias jane    Jane Jetson <jane@sky-high.appts>
  937. X  alias group    george, jane
  938. X  .in -2
  939. X***************
  940. X*** 3573,3579 ****
  941. X  .sp
  942. X  You can mail using the alias as an address and it will be expanded
  943. X  accordingly.
  944. X! You can not, however, reference an alias and specify a
  945. X  comment or another address at the same time.
  946. X  .sp
  947. X  .ti +2
  948. X--- 3667,3673 ----
  949. X  .sp
  950. X  You can mail using the alias as an address and it will be expanded
  951. X  accordingly.
  952. X! You cannot, however, reference an alias and specify a
  953. X  comment or another address at the same time.
  954. X  .sp
  955. X  .ti +2
  956. X***************
  957. X*** 3593,3599 ****
  958. X  ~/.mushXXXXXX    Temporary mail file (copy of current folder)
  959. X  .fi
  960. X  .PP
  961. X! Temporary files which are created by the program are always
  962. X  created with read/write access to the owner only; group and other
  963. X  permissions are never set.
  964. X  This is also true for the /usr/spool/mail/* files.
  965. X--- 3687,3693 ----
  966. X  ~/.mushXXXXXX    Temporary mail file (copy of current folder)
  967. X  .fi
  968. X  .PP
  969. X! Temporary files that are created by the program are always
  970. X  created with read/write access to the owner only; group and other
  971. X  permissions are never set.
  972. X  This is also true for the /usr/spool/mail/* files.
  973. X***************
  974. X*** 3634,3641 ****
  975. X  argv@spam.istc.sri.com    sun!island!argv
  976. X  .SH BUGS
  977. X  The curses interface uses the curses library.
  978. X! The routines from the library that are used are the most basic and simple to
  979. X! avoid possible bugginess that different versions of UNIX might have.
  980. X  However, one unavoidable problem is the reverse video mode.
  981. X  Depending on your terminal,
  982. X  the termcap entry for it, and the version of curses you are running,
  983. X--- 3728,3735 ----
  984. X  argv@spam.istc.sri.com    sun!island!argv
  985. X  .SH BUGS
  986. X  The curses interface uses the curses library.
  987. X! The routines from the library that are used are the most basic and simple
  988. X! so as to avoid possible bugginess that different versions of UNIX might have.
  989. X  However, one unavoidable problem is the reverse video mode.
  990. X  Depending on your terminal,
  991. X  the termcap entry for it, and the version of curses you are running,
  992. X***************
  993. X*** 3650,3656 ****
  994. X  and there is no swap space left, there may be problems.
  995. X  One such problem is sending mail.
  996. X  If this happens, then sending mail
  997. X! will fail and a segmentation fault from the spawned forked child will occur
  998. X  unless the -v flag was given to mail.
  999. X  The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
  1000. X  and may be recovered.
  1001. X--- 3744,3750 ----
  1002. X  and there is no swap space left, there may be problems.
  1003. X  One such problem is sending mail.
  1004. X  If this happens, then sending mail
  1005. X! will fail and a segmentation fault from the spawned/forked child will occur
  1006. X  unless the -v flag was given to mail.
  1007. X  The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
  1008. X  and may be recovered.
  1009. X***************
  1010. X*** 3671,3677 ****
  1011. X  .I window
  1012. X  to run commands from.
  1013. X  It is impossible to determine whether or not the user wants to run an
  1014. X! interactive program or not so it is best to disallow its usage all together.
  1015. X  The experienced window user
  1016. X  can figure out how to really do shell layers from within the tool mode.
  1017. X  .PP
  1018. X--- 3765,3771 ----
  1019. X  .I window
  1020. X  to run commands from.
  1021. X  It is impossible to determine whether or not the user wants to run an
  1022. X! interactive program or not, so it is best to disallow its usage all together.
  1023. X  The experienced window user
  1024. X  can figure out how to really do shell layers from within the tool mode.
  1025. X  .PP
  1026. X***************
  1027. X*** 3684,3691 ****
  1028. X  The function keys and their ability to
  1029. X  .I work
  1030. X  has been variable depending on the version of SunWindows/SunView
  1031. X! your Sun Workstation has.
  1032. X! From time to time, it works, but when it
  1033. X  doesn't, it seems to be related to other user or system definable
  1034. X  dot-files or whatever.
  1035. X  I hardly use them, so I haven't had a chance
  1036. X--- 3778,3784 ----
  1037. X  The function keys and their ability to
  1038. X  .I work
  1039. X  has been variable depending on the version of SunWindows/SunView
  1040. X! your Sun Workstation has.  From time to time, it works, but when it
  1041. X  doesn't, it seems to be related to other user or system definable
  1042. X  dot-files or whatever.
  1043. X  I hardly use them, so I haven't had a chance
  1044. X***************
  1045. X*** 3706,3717 ****
  1046. X  .I Mush
  1047. X  may complain or not even run since it needs temporary space with which
  1048. X  to work.
  1049. X! Instead of finding new filesystems on it's own,
  1050. X  .I Mush
  1051. X  leaves this task up to the user.
  1052. X  The workaround is to set the variable
  1053. X  .B home
  1054. X! in the initialization file to be a writable place in a filesystem which
  1055. X  has enough disk space.
  1056. X  This will set the user's home directory to be
  1057. X  set incorrectly, but resetting the home manually once in the shell
  1058. X--- 3799,3810 ----
  1059. X  .I Mush
  1060. X  may complain or not even run since it needs temporary space with which
  1061. X  to work.
  1062. X! Instead of finding new filesystems on its own,
  1063. X  .I Mush
  1064. X  leaves this task up to the user.
  1065. X  The workaround is to set the variable
  1066. X  .B home
  1067. X! in the initialization file to be a writable place in a filesystem that
  1068. X  has enough disk space.
  1069. X  This will set the user's home directory to be
  1070. X  set incorrectly, but resetting the home manually once in the shell
  1071. X*** OLD/mush.h    Thu May 12 21:14:46 1988
  1072. X--- mush.h    Wed Jul  6 12:06:20 1988
  1073. X***************
  1074. X*** 1,19 ****
  1075. X  /* @(#)mush.h    (c) copyright 1986 (Dan Heller) */
  1076. X  
  1077. X! #define VERSION "Mail User's Shell (6.2 5/11/88)"
  1078. X  
  1079. X  #include "config.h"
  1080. X  
  1081. X  #ifdef CURSES
  1082. X  #ifdef USG
  1083. X  #    define _USG
  1084. X  #    undef USG
  1085. X  #endif /* USG */
  1086. X  #include <curses.h>
  1087. X  #if !defined(USG) && defined(_USG)
  1088. X  #    define USG
  1089. X! #    undef _USG
  1090. X! #endif /* USG && _USG */
  1091. X  #else /* CURSES */
  1092. X  #include <stdio.h>
  1093. X  #if defined(SYSV) && defined(USG)
  1094. X--- 1,27 ----
  1095. X  /* @(#)mush.h    (c) copyright 1986 (Dan Heller) */
  1096. X  
  1097. X! #define VERSION "Mail User's Shell (6.3 6/25/88)"
  1098. X  
  1099. X  #include "config.h"
  1100. X  
  1101. X  #ifdef CURSES
  1102. X+ 
  1103. X  #ifdef USG
  1104. X  #    define _USG
  1105. X  #    undef USG
  1106. X  #endif /* USG */
  1107. X+ #ifdef SYSV
  1108. X+ #    define _SYSV
  1109. X+ #    undef SYSV
  1110. X+ #endif /* SYSV */
  1111. X  #include <curses.h>
  1112. X  #if !defined(USG) && defined(_USG)
  1113. X  #    define USG
  1114. X! #endif /* USG */
  1115. X! #if !defined(SYSV) && defined(_SYSV)
  1116. X! #    define SYSV
  1117. X! #endif /* SYSV */
  1118. X! 
  1119. X  #else /* CURSES */
  1120. X  #include <stdio.h>
  1121. X  #if defined(SYSV) && defined(USG)
  1122. X***************
  1123. X*** 87,94 ****
  1124. X   * on_intr() and off_intr() macros, initialize WAS_INTR to false.
  1125. X   */
  1126. X  #define on_intr() \
  1127. X!     turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, interrupt), \
  1128. X!     oldquit = signal(SIGQUIT, interrupt)
  1129. X  
  1130. X  #define off_intr() \
  1131. X      turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
  1132. X--- 95,102 ----
  1133. X   * on_intr() and off_intr() macros, initialize WAS_INTR to false.
  1134. X   */
  1135. X  #define on_intr() \
  1136. X!     turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, intr), \
  1137. X!     oldquit = signal(SIGQUIT, intr)
  1138. X  
  1139. X  #define off_intr() \
  1140. X      turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
  1141. X***************
  1142. X*** 104,110 ****
  1143. X  
  1144. X  /* for system-V machines that run termio */
  1145. X  #if defined(SYSV) && defined(USG)
  1146. X! unsigned char vmin;
  1147. X  #define sg_erase  c_cc[2]
  1148. X  #define sg_flags  c_lflag
  1149. X  #define sg_kill   c_cc[3]
  1150. X--- 112,118 ----
  1151. X  
  1152. X  /* for system-V machines that run termio */
  1153. X  #if defined(SYSV) && defined(USG)
  1154. X! unsigned char vmin, vtime;
  1155. X  #define sg_erase  c_cc[2]
  1156. X  #define sg_flags  c_lflag
  1157. X  #define sg_kill   c_cc[3]
  1158. X***************
  1159. X*** 117,124 ****
  1160. X  #define cbrkon()   \
  1161. X      (_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
  1162. X  #define cbrkoff()  \
  1163. X!     (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, stty(0, &_tty))
  1164. X! #define savetty()  (void) gtty(0, &_tty), vmin = _tty.c_cc[VMIN]
  1165. X  #define cbreak()   cbrkon()
  1166. X  #define nocbreak() cbrkoff()
  1167. X  
  1168. X--- 125,134 ----
  1169. X  #define cbrkon()   \
  1170. X      (_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
  1171. X  #define cbrkoff()  \
  1172. X!     (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, \
  1173. X!     _tty.c_cc[VTIME] = vtime, stty(0, &_tty))
  1174. X! #define savetty()  \
  1175. X!     (void) gtty(0, &_tty), vtime = _tty.c_cc[VTIME], vmin = _tty.c_cc[VMIN]
  1176. X  #define cbreak()   cbrkon()
  1177. X  #define nocbreak() cbrkoff()
  1178. X  
  1179. X***************
  1180. X*** 296,301 ****
  1181. X--- 306,312 ----
  1182. X  #define CNTD_CMD   18   /* curses.c -- "...continue..." prompt in curses */
  1183. X  #define IS_SENDING 19   /* was started to send mail, not to be run as a shell */
  1184. X  #define MIL_TIME   20    /* if $mil_time is set, use 24hr military time fmt */
  1185. X+ #define DATE_RECV  21   /* if $date_received, show date received on msgs */
  1186. X  
  1187. X  #define VERBOSE        1       /* verbose flag for sendmail */
  1188. X  #define INCLUDE        2       /* include msg in response */
  1189. X***************
  1190. X*** 314,323 ****
  1191. X  #define INDENT        13    /* indent included msg with string */
  1192. X  #define NO_IGNORE    14    /* don't ignore headers */
  1193. X  #define PRESERVE    15      /* preserve in mailbox unless deleted */
  1194. X! #define TOP        15    /* just print the top of msg (same as pre) */
  1195. X  #define FORWARD        16    /* Forward messages into the message buffer */
  1196. X  #define REPLIED        17    /* Messages that have been replied to */
  1197. X  #define NEW_SUBJECT    18    /* new subject regardless of $ask (mail -s) */
  1198. X  
  1199. X  #define    MAXMSGS_BITS    MAXMSGS/sizeof(char)    /* number of bits for bitmap */
  1200. X  
  1201. X--- 325,335 ----
  1202. X  #define INDENT        13    /* indent included msg with string */
  1203. X  #define NO_IGNORE    14    /* don't ignore headers */
  1204. X  #define PRESERVE    15      /* preserve in mailbox unless deleted */
  1205. X! #define M_TOP        15    /* just print the top of msg (same as pre) */
  1206. X  #define FORWARD        16    /* Forward messages into the message buffer */
  1207. X  #define REPLIED        17    /* Messages that have been replied to */
  1208. X  #define NEW_SUBJECT    18    /* new subject regardless of $ask (mail -s) */
  1209. X+ #define SAVED        19    /* when message has been saved */
  1210. X  
  1211. X  #define    MAXMSGS_BITS    MAXMSGS/sizeof(char)    /* number of bits for bitmap */
  1212. X  
  1213. X***************
  1214. X*** 415,428 ****
  1215. X      n_array[128],    /* array of message numbers in the header window */
  1216. X      screen,        /* number of headers window can handle */
  1217. X  
  1218. X!     quit(), cleanup(), catch(), do_alias(), respond(), cd(), sh(), stop(),
  1219. X      folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
  1220. X!     rm_edfile(), pick(), save_opts(), preserve(), sort(), readmsg(),
  1221. X      do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
  1222. X!     do_version(), disp_hist(), source(), do_echo(), sigchldcatcher(), ls(),
  1223. X!     nopenfiles(), Setenv(), Unsetenv(), Printenv(), bus_n_seg(), msg_flags(),
  1224. X!     toggle_debug(), stop_start(), interrupt();
  1225. X  
  1226. X  long
  1227. X      still_more,        /* there is still more message to display */
  1228. X      spool_size,        /* size of sppol mail regardless of current folder */
  1229. X--- 427,445 ----
  1230. X      n_array[128],    /* array of message numbers in the header window */
  1231. X      screen,        /* number of headers window can handle */
  1232. X  
  1233. X!     quit(), do_alias(), respond(), cd(), sh(), stop(),
  1234. X      folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
  1235. X!     pick(), save_opts(), preserve(), sort(), readmsg(),
  1236. X      do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
  1237. X!     do_version(), disp_hist(), source(), do_echo(), ls(),
  1238. X!     nopenfiles(), Setenv(), Unsetenv(), Printenv(), msg_flags(), toggle_debug();
  1239. X  
  1240. X+ #ifndef SIGRET
  1241. X+ #define SIGRET int
  1242. X+ #endif /* SIGRET */
  1243. X+ SIGRET
  1244. X+     rm_edfile(), stop_start(), bus_n_seg(), sigchldcatcher(), catch(), intr();
  1245. X+ 
  1246. X  long
  1247. X      still_more,        /* there is still more message to display */
  1248. X      spool_size,        /* size of sppol mail regardless of current folder */
  1249. X***************
  1250. X*** 430,437 ****
  1251. X      time();        /* satisfy lint */
  1252. X  
  1253. X  void
  1254. X!     xfree(), free_vec(), error(), getmail(), mail_status(),
  1255. X!     file_to_fp(), init(), display_msg();
  1256. X      /* printf(), fclose(), fflush(), fputs(), fputc() */
  1257. X  #ifdef TIOCGLTC
  1258. X  struct ltchars ltchars;            /* tty character settings */
  1259. X--- 447,454 ----
  1260. X      time();        /* satisfy lint */
  1261. X  
  1262. X  void
  1263. X!     xfree(), free_vec(), error(), getmail(), mail_status(), close_lock(),
  1264. X!     file_to_fp(), init(), display_msg(), putstring(), cleanup(), fs_error();
  1265. X      /* printf(), fclose(), fflush(), fputs(), fputc() */
  1266. X  #ifdef TIOCGLTC
  1267. X  struct ltchars ltchars;            /* tty character settings */
  1268. X*** OLD/pick.c    Thu May 12 21:14:48 1988
  1269. X--- pick.c    Tue Jun 28 21:38:28 1988
  1270. X***************
  1271. X*** 38,43 ****
  1272. X--- 38,44 ----
  1273. X  register char **argv, list[];
  1274. X  {
  1275. X      register char c;
  1276. X+     char pattern[256];
  1277. X      int o_before = before, o_after = after, o_search_from = search_from,
  1278. X      o_search_subj = search_subj, o_search_to = search_to, o_xflg = xflg,
  1279. X      o_mdy[3], n;
  1280. X***************
  1281. X*** 113,123 ****
  1282. X          clear_msg_list(list);
  1283. X          return -1;
  1284. X      }
  1285. X      if (verbose) {
  1286. X      print_more("Searching for messages");
  1287. X      if (mdy[1] == 0) {
  1288. X          print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
  1289. X!                 (*argv)? *argv: "<previous expression>");
  1290. X          if (search_subj)
  1291. X          print_more(" in subject line");
  1292. X          else if (search_from)
  1293. X--- 114,126 ----
  1294. X          clear_msg_list(list);
  1295. X          return -1;
  1296. X      }
  1297. X+     pattern[0] = 0;
  1298. X+     (void) argv_to_string(pattern, argv);
  1299. X      if (verbose) {
  1300. X      print_more("Searching for messages");
  1301. X      if (mdy[1] == 0) {
  1302. X          print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
  1303. X!                 (*pattern)? pattern: "<previous expression>");
  1304. X          if (search_subj)
  1305. X          print_more(" in subject line");
  1306. X          else if (search_from)
  1307. X***************
  1308. X*** 138,144 ****
  1309. X      }
  1310. X      if (mdy[1] > 0 && icase)
  1311. X      print("using date: -i flag ignored.\n");
  1312. X!     ret = find_pattern(*argv, list);
  1313. X  bad:
  1314. X      before = o_before, after = o_after, search_from = o_search_from;
  1315. X      search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
  1316. X--- 141,147 ----
  1317. X      }
  1318. X      if (mdy[1] > 0 && icase)
  1319. X      print("using date: -i flag ignored.\n");
  1320. X!     ret = find_pattern(pattern, list);
  1321. X  bad:
  1322. X      before = o_before, after = o_after, search_from = o_search_from;
  1323. X      search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
  1324. X***************
  1325. X*** 302,308 ****
  1326. X      char           pattern[128];
  1327. X      register int    this_msg = current_msg, val = 0;
  1328. X      static char     *err = (char *)-1, direction;
  1329. X!     int            (*oldint)(), (*oldquit)();
  1330. X  #ifdef REGCMP
  1331. X      char *regcmp();
  1332. X  #else /* REGCMP */
  1333. X--- 305,311 ----
  1334. X      char           pattern[128];
  1335. X      register int    this_msg = current_msg, val = 0;
  1336. X      static char     *err = (char *)-1, direction;
  1337. X!     SIGRET        (*oldint)(), (*oldquit)();
  1338. X  #ifdef REGCMP
  1339. X      char *regcmp();
  1340. X  #else /* REGCMP */
  1341. X*** OLD/setopts.c    Thu Apr  7 22:47:56 1988
  1342. X--- setopts.c    Tue Jun 28 21:38:29 1988
  1343. X***************
  1344. X*** 66,71 ****
  1345. X--- 66,75 ----
  1346. X          prompt = (tmp->value)? tmp->value : DEF_PROMPT;
  1347. X      else if (!strcmp(tmp->option, "mil_time"))
  1348. X          turnon(glob_flags, MIL_TIME);
  1349. X+ #ifndef MSG_SEPARATOR
  1350. X+     else if (!strcmp(tmp->option, "date_received"))
  1351. X+         turnon(glob_flags, DATE_RECV);
  1352. X+ #endif /* MSG_SEPARATOR */
  1353. X      else if (!strcmp(tmp->option, "escape"))
  1354. X          escape = (tmp->value)? tmp->value : DEF_ESCAPE;
  1355. X      else if (!strcmp(tmp->option, "hdr_format"))
  1356. X***************
  1357. X*** 189,194 ****
  1358. X--- 193,202 ----
  1359. X          prompt = DEF_PROMPT;
  1360. X      else if (!strcmp(p, "mil_time"))
  1361. X          turnoff(glob_flags, MIL_TIME);
  1362. X+ #ifndef MSG_SEPARATOR
  1363. X+     else if (!strcmp(p, "date_received"))
  1364. X+         turnoff(glob_flags, DATE_RECV);
  1365. X+ #endif /* MSG_SEPARATOR */
  1366. X      else if (!strcmp(p, "escape"))
  1367. X          escape = DEF_ESCAPE;
  1368. X      else if (!strcmp(p, "hdr_format"))
  1369. X*** OLD/signals.c    Fri Jun 10 12:38:25 1988
  1370. X--- signals.c    Tue Jul  5 12:08:37 1988
  1371. X***************
  1372. X*** 90,96 ****
  1373. X  }
  1374. X  #endif /* SUNTOOL */
  1375. X  
  1376. X! interrupt(sig)
  1377. X  {
  1378. X      Debug("interrupt() caught: %d\n", sig);
  1379. X      turnon(glob_flags, WAS_INTR);
  1380. X--- 90,97 ----
  1381. X  }
  1382. X  #endif /* SUNTOOL */
  1383. X  
  1384. X! SIGRET
  1385. X! intr(sig)
  1386. X  {
  1387. X      Debug("interrupt() caught: %d\n", sig);
  1388. X      turnon(glob_flags, WAS_INTR);
  1389. X***************
  1390. X*** 101,106 ****
  1391. X--- 102,108 ----
  1392. X   * If signals are ignored, return.  If we're running the shell, longjmp back.
  1393. X   */
  1394. X  /*ARGSUSED*/
  1395. X+ SIGRET
  1396. X  catch(sig)
  1397. X  {
  1398. X      Debug("Caught signal: %d\n", sig);
  1399. X***************
  1400. X*** 125,130 ****
  1401. X--- 127,133 ----
  1402. X  }
  1403. X  
  1404. X  #ifdef SIGCONT
  1405. X+ SIGRET
  1406. X  stop_start(sig)
  1407. X  {
  1408. X      extern FILE *ed_fp;
  1409. X***************
  1410. X*** 194,199 ****
  1411. X--- 197,203 ----
  1412. X  #endif /* SIGCONT */
  1413. X  
  1414. X  /*ARGSUSED*/
  1415. X+ void
  1416. X  cleanup(sig)
  1417. X  {
  1418. X      char buf[128], c = ison(glob_flags, IGN_SIGS)? 'n' : 'y';
  1419. X***************
  1420. X*** 215,224 ****
  1421. X      }
  1422. X      if (c != 'n' && *tempfile && unlink(tempfile) && !sig && errno != ENOENT)
  1423. X      error(tempfile);
  1424. X- #ifdef SUNTOOL
  1425. X-     if (istool && tool)
  1426. X-     tool_destroy(tool);
  1427. X- #endif /* SUNTOOL */
  1428. X      if (sig == SIGSEGV || sig == SIGBUS) {
  1429. X      if (isoff(glob_flags, IGN_SIGS)) {
  1430. X          fprintf(stderr, "coredump [n]? "), fflush(stderr);
  1431. X--- 219,224 ----
  1432. X***************
  1433. X*** 320,325 ****
  1434. X--- 320,326 ----
  1435. X  }
  1436. X  
  1437. X  /*ARGSUSED*/   /* we ignore the sigstack, cpu-usage, etc... */
  1438. X+ SIGRET
  1439. X  bus_n_seg(sig)
  1440. X  {
  1441. X      fprintf(stderr, "%s: %s\n", prog_name,
  1442. X*** OLD/sort.c    Fri Feb 19 20:30:57 1988
  1443. X--- sort.c    Tue Jun 28 21:38:31 1988
  1444. X***************
  1445. X*** 11,17 ****
  1446. X  register char *argv[], list[];
  1447. X  {
  1448. X      int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
  1449. X!     int (*oldint)(), (*oldquit)();
  1450. X      int (*how)() = status_cmp;
  1451. X      int n, offset = -1, range = 0;
  1452. X  
  1453. X--- 11,17 ----
  1454. X  register char *argv[], list[];
  1455. X  {
  1456. X      int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
  1457. X!     SIGRET (*oldint)(), (*oldquit)();
  1458. X      int (*how)() = status_cmp;
  1459. X      int n, offset = -1, range = 0;
  1460. X  
  1461. X***************
  1462. X*** 35,40 ****
  1463. X--- 35,41 ----
  1464. X      print("Not enough messages to sort.\n");
  1465. X      return -1;
  1466. X      }
  1467. X+     turnon(glob_flags, IGN_SIGS);
  1468. X      on_intr();
  1469. X  
  1470. X      if (list && ison(glob_flags, IS_PIPE)) {
  1471. X***************
  1472. X*** 59,64 ****
  1473. X--- 60,66 ----
  1474. X          print("WARNING: Sorting interrupted: unpredictable order.\n");
  1475. X      turnon(glob_flags, DO_UPDATE);
  1476. X      }
  1477. X+     turnoff(glob_flags, IGN_SIGS);
  1478. X      off_intr();
  1479. X      return -1;
  1480. X  }
  1481. X***************
  1482. X*** 115,120 ****
  1483. X--- 117,126 ----
  1484. X      if (ison(msg1->m_flags,REPLIED) && isoff(msg2->m_flags,REPLIED))
  1485. X      return -order;
  1486. X      if (isoff(msg1->m_flags,REPLIED) && ison(msg2->m_flags,REPLIED))
  1487. X+     return order;
  1488. X+     if (ison(msg1->m_flags,SAVED) && isoff(msg2->m_flags,SAVED))
  1489. X+     return -order;
  1490. X+     if (isoff(msg1->m_flags,SAVED) && ison(msg2->m_flags,SAVED))
  1491. X      return order;
  1492. X  
  1493. X      return order;
  1494. X*** OLD/strings.c    Thu May 12 21:14:49 1988
  1495. X--- strings.c    Tue Jun 28 21:38:31 1988
  1496. X***************
  1497. X*** 221,235 ****
  1498. X  #ifdef SYSV
  1499. X  #include <varargs.h>
  1500. X  char *
  1501. X! Sprintf(buf, fmt, va_alist)
  1502. X! register char *buf, *fmt;
  1503. X  va_dcl
  1504. X  {
  1505. X      va_list ap;
  1506. X! #ifdef VPRINTF
  1507. X      va_start(ap);
  1508. X      (void) vsprintf(buf, fmt, ap);
  1509. X-     va_end(ap);
  1510. X  #else
  1511. X      {
  1512. X      FILE foo;
  1513. X--- 221,237 ----
  1514. X  #ifdef SYSV
  1515. X  #include <varargs.h>
  1516. X  char *
  1517. X! Sprintf(va_alist)
  1518. X  va_dcl
  1519. X  {
  1520. X+     char *buf, *fmt;
  1521. X      va_list ap;
  1522. X! 
  1523. X      va_start(ap);
  1524. X+     buf = va_arg(ap, char *);
  1525. X+     fmt = va_arg(ap, char *);
  1526. X+ #ifdef VPRINTF
  1527. X      (void) vsprintf(buf, fmt, ap);
  1528. X  #else
  1529. X      {
  1530. X      FILE foo;
  1531. X***************
  1532. X*** 236,247 ****
  1533. X      foo._cnt = BUFSIZ;
  1534. X      foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
  1535. X      foo._flag = _IOWRT+_IOSTRG;
  1536. X-     va_start(ap);
  1537. X      (void) _doprnt(fmt, ap, &foo);
  1538. X-     va_end(ap);
  1539. X      *foo._ptr = '\0'; /* plant terminating null character */
  1540. X      }
  1541. X  #endif /* VPRINTF */
  1542. X      return buf;
  1543. X  }
  1544. X  #endif /* SYSV */
  1545. X--- 238,248 ----
  1546. X      foo._cnt = BUFSIZ;
  1547. X      foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
  1548. X      foo._flag = _IOWRT+_IOSTRG;
  1549. X      (void) _doprnt(fmt, ap, &foo);
  1550. X      *foo._ptr = '\0'; /* plant terminating null character */
  1551. X      }
  1552. X  #endif /* VPRINTF */
  1553. X+     va_end(ap);
  1554. X      return buf;
  1555. X  }
  1556. X  #endif /* SYSV */
  1557. X***************
  1558. X*** 259,262 ****
  1559. X--- 260,285 ----
  1560. X      fflush(stdout);
  1561. X      } else
  1562. X      wprint("\n");
  1563. X+ }
  1564. X+ 
  1565. X+ /*
  1566. X+  * putstring -- put a string into a file.  Expand \t's into tabs and \n's
  1567. X+  * into newlines.  Append a \n and fflush(fp);
  1568. X+  */
  1569. X+ void
  1570. X+ putstring(p, fp)
  1571. X+ register char *p;
  1572. X+ register FILE *fp;
  1573. X+ {
  1574. X+     for ( ; *p; ++p)
  1575. X+     if (*p != '\\')
  1576. X+         fputc(*p, fp);
  1577. X+     else
  1578. X+         switch(*++p) {
  1579. X+         case 'n': fputc('\n', fp);
  1580. X+         when 't': fputc('\t', fp);
  1581. X+         otherwise: fputc(*p, fp);
  1582. X+         }
  1583. X+     fputc('\n', fp);
  1584. X+     fflush(fp);
  1585. X  }
  1586. X*** OLD/viewopts.c    Thu May 12 21:14:50 1988
  1587. X--- viewopts.c    Tue Jun 28 21:38:32 1988
  1588. X***************
  1589. X*** 45,50 ****
  1590. X--- 45,52 ----
  1591. X        "Path to search for directories when the \"cd\" command is issued." },
  1592. X      { "crt", "Lines", TEXT,
  1593. X        "The number of lines a message must have for 'pager' to be invoked." },
  1594. X+     { "date_received", NULL, TOOL | TEXT,
  1595. X+       "Time displayed for message headers shows date received (or sent)." },
  1596. X      { "dead", "Filename", TOOL | TEXT,
  1597. X        "The name of the file to store dead mail. ~/dead.letter by default." },
  1598. X      { "dot", NULL, TOOL | TEXT,
  1599. X***************
  1600. X*** 65,70 ****
  1601. X--- 67,76 ----
  1602. X        "How many commands to remember (like csh)." },
  1603. X      { "hold", NULL, TOOL | TEXT,
  1604. X        "Read but not deleted messages are saved in spool -- not mbox." },
  1605. X+     { "home", "Directory", TOOL | TEXT,
  1606. X+       "The user's home directory." },
  1607. X+     { "hostname", "Hostname", TOOL | TEXT,
  1608. X+       "user definable name for the name of your machine." },
  1609. X      { "ignore_bang", NULL, TEXT,
  1610. X        "Ignore '!' as a history reference. Otherwise, escape by: \\!" },
  1611. X      { "ignoreeof", "-Command", TEXT,
  1612. X***************
  1613. X*** 89,95 ****
  1614. X        "Ignore RETURN. If set to a string, execute \"command\"" },
  1615. X      { "no_expand", NULL, TEXT | TOOL,
  1616. X        "Prevents expansion of Mush aliases in outgoing mail." },
  1617. X!     { "no_hdr", NULL, TOOL | TEXT,
  1618. X        "If set, personalized headers are NOT inserted to outgoing mail." },
  1619. X      { "no_reverse", NULL, TOOL | TEXT,
  1620. X        "disables reverse video in curses mode -- uses \"bold\" in tool mode." },
  1621. X--- 95,101 ----
  1622. X        "Ignore RETURN. If set to a string, execute \"command\"" },
  1623. X      { "no_expand", NULL, TEXT | TOOL,
  1624. X        "Prevents expansion of Mush aliases in outgoing mail." },
  1625. X!     { "no_hdrs", NULL, TOOL | TEXT,
  1626. X        "If set, personalized headers are NOT inserted to outgoing mail." },
  1627. X      { "no_reverse", NULL, TOOL | TEXT,
  1628. X        "disables reverse video in curses mode -- uses \"bold\" in tool mode." },
  1629. X***************
  1630. X*** 109,118 ****
  1631. X        "Your prompt.  \"help prompt\" for more information." },
  1632. X      { "quiet", NULL, TEXT,
  1633. X        "Don't print the version number of Mush on startup." },
  1634. X      { "record", "Filename", TOOL | TEXT,
  1635. X        "Save all outgoing mail in specified filename" },
  1636. X      { "reply_to_hdr", "Headers", TOOL | TEXT,
  1637. X!       "List of headers use to construct reply adresses from a message.", },
  1638. X      { "screen", "Number of Headers", TEXT,
  1639. X        "Number of headers to print in non-suntools (text) mode" },
  1640. X      { "screen_win", "Number of Headers", TOOL,
  1641. X--- 115,128 ----
  1642. X        "Your prompt.  \"help prompt\" for more information." },
  1643. X      { "quiet", NULL, TEXT,
  1644. X        "Don't print the version number of Mush on startup." },
  1645. X+     { "realname", "Name:", TOOL | TEXT,
  1646. X+       "Your real name." },
  1647. X      { "record", "Filename", TOOL | TEXT,
  1648. X        "Save all outgoing mail in specified filename" },
  1649. X      { "reply_to_hdr", "Headers", TOOL | TEXT,
  1650. X!       "List of headers use to construct reply adresses from a message." },
  1651. X!     { "save_empty", NULL, TOOL | TEXT,
  1652. X!       "Folders which have all messages deleted are NOT removed on updates." },
  1653. X      { "screen", "Number of Headers", TEXT,
  1654. X        "Number of headers to print in non-suntools (text) mode" },
  1655. X      { "screen_win", "Number of Headers", TOOL,
  1656. X***************
  1657. X*** 127,133 ****
  1658. X        "Pre-sorting of messages on program startup (set to valid sort option)" },
  1659. X      { "squeeze", NULL, TOOL | TEXT,
  1660. X        "When reading messages, squeeze all blank lines into one." },
  1661. X!     { "top", "Lines", TOOL | TEXT,
  1662. X        "Number of lines to print of a message for the 'top' command."  },
  1663. X      { "tmpdir", "Directory", TOOL | TEXT,
  1664. X        "Directory to use for temporary files used by Mush." },
  1665. X--- 137,143 ----
  1666. X        "Pre-sorting of messages on program startup (set to valid sort option)" },
  1667. X      { "squeeze", NULL, TOOL | TEXT,
  1668. X        "When reading messages, squeeze all blank lines into one." },
  1669. X!     { "toplines", "Lines", TOOL | TEXT,
  1670. X        "Number of lines to print of a message for the 'top' command."  },
  1671. X      { "tmpdir", "Directory", TOOL | TEXT,
  1672. X        "Directory to use for temporary files used by Mush." },
  1673. END_OF_FILE
  1674. if test 52485 -ne `wc -c <'Diffs.6.3.c'`; then
  1675.     echo shar: \"'Diffs.6.3.c'\" unpacked with wrong size!
  1676. fi
  1677. # end of 'Diffs.6.3.c'
  1678. fi
  1679. echo shar: End of shell archive.
  1680. exit 0
  1681.